package com.rzcode.coinex.kernel.dao.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 部门实体类，用于存储公司内部的组织结构信息。
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "department")
public class Department implements Serializable {

    /**
     * 部门ID，自增主键。
     */
    @ApiModelProperty(value = "部门ID", example = "1")
    private Long id;

    /**
     * 部门名称，唯一且不可为空。
     */
    @ApiModelProperty(value = "部门名称", required = true, example = "销售部")
    private String name;

    /**
     * 备注，用于描述部门的额外信息。
     */
    @ApiModelProperty(value = "备注", example = "负责公司产品销售及市场拓展")
    private String remark;

    /**
     * 领导者ID，指向员工表的外键，表示该部门的负责人。
     */
    @ApiModelProperty(value = "领导者ID", example = "10001")
    private Long leaderId;

    /**
     * 创建时间，记录部门创建的时间。
     */
    @ApiModelProperty(value = "创建时间", example = "2023-01-01 12:00:00")
    private LocalDateTime createTime;

    /**
     * 更新时间，记录部门信息最后更新的时间。
     */
    @ApiModelProperty(value = "更新时间", example = "2023-01-01 12:00:00")
    private LocalDateTime updateTime;
}

